前言
近期在做一个商城类项目,需要实现对一个订单里的多个商品分别评价的功能(类似于淘宝的评价),花费了一点时间把效果做了出来,并在这里分享出来也权当做了记录,图个日后使用方便。
设计原理
因为每个订单可能有多个商品,所以我直接用一个RecyclerView来展示多个商品,这里主要的难点在于Item的布局。
EvaluationView和EvaluationChoiceImageView是两个自定义View,分别用来选择评价类型和选择评价图片的。
EvaluationView内部原理比较简单主要是在LinearLayout内部嵌套了EvaluationItem。
EvaluationChoiceImageView的内部原理主要是使用FlowLayout(流式布局),然后将选择的图片添加到FlowLayout中,FlowLayout的好处就是它能够实现自动换行。
另外EvaluationChoiceImageView可以通过添加监听事件来进行相应的操作
1 | //当点击选择图片的时候(这里一般通过调用addImage()方法进行添加图片操作) |
代码解释
这里首先是创建一个EvaluationBean用来存放每个商品需要提交的信息。
1 | public class EvaluationBean { |
然后再建立一个存放EvaluationBean的集合,集合的大小与订单中商品的数量相同。
1 | private void initDatas() { |
最后将选择好的数据通过遍历集合的方式传到服务器。
1 | for (EvaluationBean evaluationBean:evaluationBeans){ |
大体流程就是这样,更加详细的实现可以看一下我的代码(GitHub传送门)